package main

import (
	"github.com/spf13/pflag"
	"github.com/spf13/viper"
	"go.uber.org/zap"
	"os"
	"os/signal"
	"shop_webs/goods_web/initiallize"
	"shop_webs/pkg/registry"
)

func main() {
	serviceID := "goods_web"
	InitConfig()
	initiallize.InitLogger()
	//初始化routers
	Router := initiallize.Routers()
	if err := initiallize.InitTrans("zh"); err != nil {
		zap.S().Panic(err.Error())
	}
	//初始化srv的连接
	initiallize.InitSrvConn()

	addr := viper.GetString("address")
	zap.S().Debugf("启动服务器，地址:%s", addr)

	registerClient := registry.NewRegistryClient()
	if err := registerClient.Registry(viper.GetString("host"), viper.GetInt("port"),
		viper.GetString("consul.name"), nil, serviceID); err != nil {
		zap.S().Panic("服务注册失败:", err.Error())
	}

	if err := Router.Run(addr); err != nil {
		zap.S().Panic("启动失败:", err.Error())
	}

	//接收终止信号
	quit := make(chan os.Signal)
	signal.Notify(quit)
	<-quit
	if err := registerClient.DeRegister(serviceID); err != nil {
		zap.S().Info("注销失败:", err.Error())
	} else {
		zap.S().Info("注销成功:")
	}
}
func GetEnvInfo(env string) bool {
	viper.AutomaticEnv()
	return viper.GetBool(env)
}
func InitConfig() {
	debug := GetEnvInfo("DEVELOPMENT")
	cfile := pflag.String("config",
		"config/dev.yaml", "配置文件路径")
	pflag.Parse()

	if debug {
	}

	// 直接指定文件路径
	viper.SetConfigFile(*cfile)
	if err := viper.ReadInConfig(); err != nil {
		panic(err)
	}
}
